leetcode刷题/链表 92. 反转链表 II(0ms,图解) 您所在的位置:网站首页 leetcode 0ms leetcode刷题/链表 92. 反转链表 II(0ms,图解)

leetcode刷题/链表 92. 反转链表 II(0ms,图解)

#leetcode刷题/链表 92. 反转链表 II(0ms,图解)| 来源: 网络整理| 查看: 265

92. 反转链表 II 题意:

给你单链表的头指针 head 和两个整数 left 和 right ,其中 left if(head->next == nullptr) return head; int count = right - left; int loop = left - 1; ListNode *p = head; ListNode *p_z = p; while (loop--) { p_z = p; p = p->next; } if(p == nullptr || p->next == nullptr) return head; ListNode *z = p; ListNode *s = p->next; ListNode *tmp = s->next; while (s != nullptr && count--) { s->next = p; p = s; s = tmp; if(s!=nullptr) tmp = s->next; } if (--left != 0 && s != nullptr) { z->next = s; p_z->next = p; } else if(left == 0 && s != nullptr) { z->next = s; head = p; } else if (left != 0 && s == nullptr) { p_z->next = p; z->next = nullptr; } else if (left == 0 && s == nullptr) { head = p; p_z->next = nullptr; } return head; } }; 运行结果:

运行结果

总结:

用了大量的空间来换取时间,如果left和right不在边界就不需要遍历链表,只需要修改其中一部分.不过这样会有点绕,容易造成死循环.



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有